/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gcs.Negocio;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author Pedro
 */
public class Prestacao {
    //variáveis
    private static int contador=0;
    private String codPres;
    private GregorianCalendar dataLimite;
    private float montante;
    private boolean paga;

    public Prestacao(boolean x){
        this.codPres="P"+contador;
        this.dataLimite= new GregorianCalendar();
        this.montante=0;
        this.paga=false;
    }

    public Prestacao(){
        increaseContador();
        this.codPres="P"+contador;
        this.dataLimite= new GregorianCalendar();
        this.montante=0;
        this.paga=false;
    }

    public Prestacao(GregorianCalendar date,float m,boolean p){
        increaseContador();
        this.codPres="P"+contador;
        this.dataLimite=date;
        this.montante=m;
        this.paga=p;
    }

    public Prestacao(Prestacao pres){
        this.codPres=pres.getcodPres();
        GregorianCalendar date = pres.getDataLimite();
        //this.dataLimite=new GregorianCalendar(date.YEAR, date.MONTH,date.DAY_OF_MONTH,date.HOUR_OF_DAY,date.MINUTE,date.SECOND);
        this.dataLimite= pres.getDataLimite();
        this.montante=pres.getMontante();
        this.paga=pres.getPago();
    }




    //Métodos

    //Gets
    public String getcodPres(){return this.codPres;}
    public GregorianCalendar getDataLimite(){return this.dataLimite;}
    public static int getContador(){return contador;}
    public float getMontante(){return this.montante;}
    public boolean getPago(){return this.paga;}

    //Sets
    public void setcodPres(String cod){this.codPres=cod;}
    public void setDataLimite(GregorianCalendar date){this.dataLimite = date;}
    public static void setContador(int cont){contador=cont;}
    public void setMontante(float m){this.montante=m;}
    public void setPago(boolean p){this.paga=p;}

    //Restantes
    public static void increaseContador(){contador+=1;}

    //Clone
    @Override
    public Prestacao clone(){return new Prestacao(this);}
    //Equals
    @Override
    public boolean equals(Object o){
        if(this == o)return true;
        if(o== null || this.getClass()!=o.getClass())return false;
        Prestacao p = (Prestacao)o;
        return (this.codPres.equals(p.getcodPres())
                && this.paga==p.getPago()
                && this.montante==p.getMontante()
                && this.dataLimite.equals(p.getDataLimite()));
    }
    @Override
    public String toString(){
        return ""+getcodPres()+": "+dataLimite.get(Calendar.DAY_OF_MONTH)+"-"+dataLimite.get(Calendar.MONTH)+"-"+dataLimite.get(Calendar.YEAR);
    }
}
